<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class categoria extends CI_Controller {

    function __construct(){
        parent::__construct();

        $this->load->model("CategoriaModel");
        $this->load->model("Log");
        $this->load->helper("auth");
        $this->sessao = a_logado(); //mudar
    }

    function index($mensagem = ""){
        $this->load->helper("form");
        $this->load->library("form_validation");

        $categorias = "";

        $row = $this->CategoriaModel->getCategoriaNivel(0);
        if( $row->num_rows() > 0 ) {
            foreach($row->result() as $categoria) :
                $categorias .= "<option value=\"$categoria->idCategoria\"". set_select("categoria_1", $categoria->nome). ">$categoria->nome</option>\n";
            endforeach;
        }
        
        if ($mensagem == "sucesso") $mensagem = "\nOperação realizada com sucesso!<br><br>";
        $dados = array(
            "titulo" => "Gerenciamento de Categorias",
            "user" => $this->sessao->nome,
            "categorias" => $categorias,
            "mensagem" => $mensagem
            );
        $main = array(
            "dados" => $dados,
            "link" => "admin/listar_categoria_view"
            );
        $this->load->view('template', $main);

    }

    public function cadastrar(){

        $this->load->helper("form");
        $this->load->library("form_validation");

        $this->db->where("nivel", 0);
        $res = $this->db->get("categoria");

        if( $res->num_rows() > 0 ) :
            $categorias = "";
            foreach($res->result() as $categoria) :
                $categorias .= "<option value=\"$categoria->idCategoria\" ". set_select("categoria_1", $categoria->idCategoria). ">$categoria->nome</option>\n";

            endforeach;

        endif;

        $dados = array(
            "titulo" => "Cadastro de Categorias",
            "user" => $this->sessao->nome,
            "categorias" => $categorias
            );

        $main = array(
            "dados" => $dados,
            "link" => "admin/cad_categoria_view",
            "menu" => "admin"
            );


        $this->form_validation->set_rules('nome', 'Nome categoria', 'required|min_length[4]');
        $this->form_validation->set_rules('min_intencao', 'Quant. Min. para Alerta', 'numeric');


        if ($this->form_validation->run() == false) :
                $this->load->view('template', $main);

        else :
            $campos['nome'] = $this->input->post("nome");
            $categoria = $this->input->post("categoria");

            if( count($categoria) >= 1 ) :
                for( $i = (count($categoria) - 1); $i >= 0; $i-- ) :
                    if( $categoria[$i] != 0 ) :
                        $campos['idCategoriaPai'] = $categoria[$i];
                        $campos['nivel'] = $i + 1;
                        $campos['min_intencao'] = $this->input->post("min_intencao");
                        break;

                    endif;

                endfor;

            endif;

            $idInsert = $this->CategoriaModel->inserir($campos);

            $this->Log->inserir(tipo_usuario(), id_tipo_usuario(),"cadastrou", "categoria", $idInsert);
            redirect("admin/categoria/index/sucesso");

        endif;
    }

     public function editar($id = ""){

        if ($id == "") redirect("admin/categoria/index");
        //elseif($id == 0) redirect("admin/categoria/index");
        $this->load->helper("form");
        $this->load->library("form_validation");
        $categ = $this->CategoriaModel->getCategoria($id);

        $dados = array(
            "titulo" => "Edição de Categoria",
            "user" => $this->sessao->nome,
            "categ" => $categ
            );

        $main = array(
            "dados" => $dados,
            "link" => "admin/edit_categoria_view",
            "menu" => "admin"
            );

        $this->form_validation->set_rules('nome', 'Nome categoria', 'required|min_length[4]');
        $this->form_validation->set_rules('min_intencao', 'Quant. Min. para Alerta', 'numeric');


        if ($this->form_validation->run() == false) :
                $this->load->view('template', $main);
        else :
            $edit['nome'] = $this->input->post("nome");
            $edit['min_intencao'] = $this->input->post("min_intencao");

            $this->CategoriaModel->update($id,$edit);

            $this->Log->inserir(tipo_usuario(), id_tipo_usuario(),"editou", "categoria", $id);
            redirect("admin/categoria/index/sucesso");

        endif;
    }

     public function gerenciar(){
        //print_r($this->input->post());
        $categoria = $this->input->post("categoria");
        if($categoria[count($categoria)-1] == 0)
            $idCategoria = $categoria[count($categoria)-2];
        else
            $idCategoria = $categoria[count($categoria)-1];

        //if(isset($this->input->post("deletar_x"))) {
        if($this->input->post("deletar_x")) {
            $this->deletar($idCategoria);
        }
        elseif($this->input->post("editar_x")) {
            redirect("admin/categoria/editar/".$idCategoria );
        }
    }

    public function deletar($id, $redirect = ""){
        $res = $this->CategoriaModel->getCategoriaFilhos($id);
        if($res != FALSE) :
            foreach($res->result() as $filho) :
                $this->deletar($filho->idCategoria, true);
            endforeach;
        endif;
        $this->CategoriaModel->delete($id);

        $this->Log->inserir(tipo_usuario(), id_tipo_usuario(),"deletou", "categoria", $id);
        if($redirect == "")
            redirect("admin/categoria/index/sucesso");

    }

}
